home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / book / src / event.h < prev    next >
C/C++ Source or Header  |  1993-07-08  |  4KB  |  114 lines

  1. /*
  2.  *  マウス イベント処理ライブラリ ヘッダファイル
  3.  *
  4.  *  1990.9.15   Make By ken
  5.  *              modefied by sugi
  6. */
  7.  
  8. #if !defined(__EVENT_H__)
  9.  
  10. #define __EVENT_H__
  11.  
  12. #include "menu_evt.h"
  13.  
  14. typedef enum            /*  マウスから発生する低水準イベント  */
  15. {
  16.     Ev_NON,             /*  イベントなし  */
  17.     Ev_ON_MOS,          /*  オブジェクト上に入った  */
  18.     Ev_OFF_MOS,         /*  オブジェクト上から出た  */
  19.     Ev_CLIP_MOS,        /*  クリックされた  */
  20.     Ev_SELECT_MOS,      /*  クリックされて離された  */
  21.     Ev_DOLACK_MOS,      /*  クリックしたまま移動  */
  22.     Ev_DLSEL_MOS,       /*  クリックしたまま移動して他の上で離した  */
  23.     Ev_MOVE_MOS,        /*  クリックしたまま移動して外に出た  */
  24.     Ev_REP_MOS,         /*  押し続け  */
  25.     Ev_CANCEL,          /*  キャンセル動作(右クリック)  */
  26. }   event_t;
  27.  
  28.  
  29. /*  EVENT の flag に設定する値  */
  30. #define Evf_NULL     0  /*  フラグの初期化値            */
  31. #define Evf_REPEAT   1  /*  リピート動作をする          */
  32. #define Evf_CLIP     2  /*  クリップ動作をしない        */
  33. #define Evf_CSR      4  /*  クリック位置をセットする    */
  34. #define Evf_LOCK     8  /*  イベント発生を専有する      */
  35. #define Evf_PAINT   16  /*  クリップ動作は塗り潰し      */
  36.  
  37. #define Evs_LEFT    1   /*  左ボタンのクリックで動作    */
  38. #define Evs_RIGHT   2   /*  右ボタンのクリックで動作    */
  39.  
  40. #define isrepeat(c) ((c)->flag & Evf_REPEAT)
  41. #define isclip(c) ((c)->flag & Evf_CLIP)
  42. #define iscsr(c) ((c)->flag & Evf_CSR)
  43. #define islock(c) (((c)->flag & Evf_LOCK) && ((c)->now == Ev_REP_MOS))
  44. #define ispaint(c) ((c)->flag & Evf_PAINT)
  45.  
  46. #define isleft(c) ((c)->sw & Evs_LEFT)
  47. #define isright(c) ((c)->sw & Evs_RIGHT)
  48.  
  49. typedef struct evt_s {
  50.     struct evt_s    *next, *back;
  51.     short int   level;              /*  レベル  */
  52.     short int   flag;               /*  各種スイッチ  */
  53.     event_t     now;
  54.     mevt_t      no;
  55.     short int   x1, y1, x2, y2;
  56.     void        (*proc)();
  57. } evt_t;
  58.  
  59. typedef struct _EVT
  60. {
  61.     struct _EVT *next, *back ;
  62.     short int   level ;             /*  イベントレベル  */
  63.     short int   sw ;                /*  各種スイッチ  */
  64.     void        (*proc)() ;
  65. } EVT ;
  66.  
  67. #define NOP     Evf_NULL        /*  リピートなし、クリップ動作あり  */
  68. #define REP     Evf_REPEAT      /*  リピートあり  */
  69. #define CLIP    Evf_CLIP        /*  クリップ動作なし  */
  70. #define CSR     Evf_CSR         /*  クリック位置をセット  */
  71. #define LOCK    Evf_LOCK        /*  イベント発生を専有  */
  72. #define PAINT   Evf_PAINT       /*  クリップ動作は塗り潰し  */
  73.  
  74. #define LEFT    Evs_LEFT        /*  左ボタンのクリックで動作  */
  75. #define RIGHT   Evs_RIGHT       /*  右ボタンのクリックで動作  */
  76.  
  77.  
  78. /*  マウスボタンの状態検査  */
  79. extern  int     lbtn(int sw);
  80. extern  int     rbtn(int sw);
  81.  
  82. /*  イベント発生待ち  */
  83. extern  void    EVT_loop( int min_level, int max_level ) ;
  84.  
  85. /*  一般イベントの登録・調査・解除・全解除  */
  86. extern  evt_t   *EVT_set_node(int x1, int y1, int xs, int ys,
  87.                            int level, void (*proc)(), mevt_t no, int rep);
  88. extern  evt_t   *EVT_get_node( int level, mevt_t no ) ;
  89. extern  void    EVT_level_free( int level ) ;
  90. extern  void    EVT_reset( void ) ;
  91. extern  void    BTN_set( int x,int y, int xs,int ys, int wind_col,
  92.                             int lev, void (*proc)(), mevt_t evt, int rep);
  93.  
  94. /*  キャンセル動作の登録・解除・動作の制御  */
  95. extern  int     EVT_control_cancel( int flag ) ;
  96. extern  void    EVT_set_cancel( int level, void (*proc)() ) ;
  97. extern  void    EVT_unset_cancel( int level ) ;
  98.  
  99. /*  余白イベントの登録・解除・動作の制御  */
  100. extern  int     EVT_control_ground( int flag ) ;
  101. extern  void    EVT_set_ground( int level, void (*proc)(), int sw ) ;
  102. extern  void    EVT_unset_ground( int level ) ;
  103.  
  104. /*  インターバル呼び出しイベントの登録と解除  */
  105. extern  int     EVT_set_interval( int level, int value, void (*proc)() ) ;
  106. extern  void    EVT_unset_interval( void ) ;
  107.  
  108. /*  ボタンのクリップ処理  */
  109. extern  void    DSP_clip_on(evt_t *ep);
  110. extern  void    DSP_clip_off(evt_t *ep);
  111.  
  112. #endif  /*  !defined(__EVENT_H__)  */
  113.  
  114.